package com.xx.chb01.design.factory.ff;

import com.xx.chb01.design.factory.entity.CountRecoder;

/**
 * @Auther: chb
 * @Date: 2018/12/19 12:29
 * @Description:
 *     工厂模式了，我们以工厂模式为例，经典的架构UML架构图通常由三个组成要素：
 *
 *     抽象产品角色：通常是一个抽象类或者接口，里面定义了抽象方法
 *     具体产品角色：具体产品的实现类，继承或是实现抽象策略类，通常由一个或多个组成类组成。
 *     工厂角色：持有抽象产品类的引用，负责动态运行时产品的选择和构建
 */
public interface FillCountService {
	//首先定义一个抽象产品接口FillCountService，里面定义产品的行为方法fillCount
	void fillCount(CountRecoder countRecoder, int count);
}

//接着我们需要分别实现这六种服务类型的产品，在每种产品中封装不同的服务算法，具体的代码如下所示：

class FirstStageService implements FillCountService {
	@Override
	public void fillCount(CountRecoder countRecoder, int count) {
		countRecoder.setFirstStage(count);
	}
}

class SecondStageService implements FillCountService {
	@Override
	public void fillCount(CountRecoder countRecoder, int count) {
		countRecoder.setSecondStage(count);
	}
}

class ThirdStageService implements FillCountService {
	@Override
	public void fillCount(CountRecoder countRecoder, int count) {
		countRecoder.setThirdStage(count);
	}
}

class ForthStageService implements FillCountService {
	@Override
	public void fillCount(CountRecoder countRecoder, int count) {
		countRecoder.setFourStage(count);
	}
}

class FirthStageService implements FillCountService {
	@Override
	public void fillCount(CountRecoder countRecoder, int count) {
		countRecoder.setFiveStage(count);
	}
}

class SixthStageService implements FillCountService {
	@Override
	public void fillCount(CountRecoder countRecoder, int count) {
		countRecoder.setSixStage(count);
	}
}

